package com.seanchenxi.gwt.wordpress.client;

import java.util.ArrayList;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.RootPanel;
import com.seanchenxi.gwt.wordpress.json.service.impl.WordPressJsonServiceAsyncImpl;
import com.seanchenxi.gwt.wordpress.json.service.model.Page;
import com.seanchenxi.gwt.wordpress.json.service.model.Post;
import com.seanchenxi.gwt.wordpress.json.service.model.PostType;

/**
 * Entry point classes define <code>onModuleLoad()</code>.
 */
public class WordPress implements EntryPoint {

	/**
	 * This is the entry point method.
	 */
	public void onModuleLoad() {
//		xmlrpcTest();
		WordPressJsonServiceAsyncImpl json = new WordPressJsonServiceAsyncImpl(GWT.getHostPageBaseURL()+"gwt");
		RootPanel.get().add(new HTML(json.getJsonPath()));
		json.getPost(1, new AsyncCallback<Post>() {
			
			@Override
			public void onSuccess(Post result) {
				RootPanel.get().add(new HTML("Is NULL = " + (result==null)));
				RootPanel.get().add(new HTML(""+result.getId()));
				RootPanel.get().add(new HTML(""+result.getTitle()));
				RootPanel.get().add(new HTML(""+result.getURL()));
				RootPanel.get().add(new HTML(""+result.getAuthor().getDisplayName()));
				RootPanel.get().add(new HTML(""+result.getCategories().get(0).getId()));
				RootPanel.get().add(new HTML(""+result.getAttachments().get(0).getId()));
				RootPanel.get().add(new HTML(""+result.getTags().get(0).getId()));
			}
			
			@Override
			public void onFailure(Throwable caught) {
				RootPanel.get().add(new HTML(caught.getMessage()));
				
			}
		});
		
		json.getPage(2, new AsyncCallback<Page>() {
			
			@Override
			public void onSuccess(Page result) {
				RootPanel.get().add(new HTML("PAGE Is NULL = " + (result==null)));
				RootPanel.get().add(new HTML(""+result.getId()));
				RootPanel.get().add(new HTML(""+result.getTitle()));
				RootPanel.get().add(new HTML(""+result.getURL()));
				RootPanel.get().add(new HTML(""+result.getAuthor().getDisplayName()));
//				RootPanel.get().add(new HTML(""+result.getCategories().get(0).getId()));
				RootPanel.get().add(new HTML(""+result.getAttachments().get(0).getId()));
//				RootPanel.get().add(new HTML(""+result.getTags().get(0).getId()));
			}
			
			@Override
			public void onFailure(Throwable caught) {
				// TODO Auto-generated method stub
				
			}
		});
		
		json.getRecentPosts(0, 20, PostType.POST, new AsyncCallback<ArrayList<Post>>() {
			
			@Override
			public void onSuccess(ArrayList<Post> result) {
				RootPanel.get().add(new HTML("Is NULL = " + (result==null)));
				RootPanel.get().add(new HTML(""+result.get(0).getId()));
				RootPanel.get().add(new HTML(""+result.get(0).getTitle()));
				RootPanel.get().add(new HTML(""+result.get(0).getURL()));
				RootPanel.get().add(new HTML(""+result.get(0).getAuthor().getDisplayName()));
				RootPanel.get().add(new HTML(""+result.get(0).getCategories().get(0).getId()));
				RootPanel.get().add(new HTML(""+result.get(0).getAttachments().get(0).getId()));
				RootPanel.get().add(new HTML(""+result.get(0).getTags().get(0).getId()));
			}
			
			@Override
			public void onFailure(Throwable caught) {
				RootPanel.get().add(new HTML(caught.getMessage()));
			}
		});
	}
	
//	private void xmlrpcTest(){
//		
//		String URL = "http://localhost/wp/xmlrpc.php";
//		String USER_NAME = "xmlrpc";
//		String PASSWORD = "xmlrpc";
//
//		WordPressLocalServiceAsync wp = new WordPressLocalServiceAsyncImpl(URL,
//				USER_NAME, PASSWORD);
//		MetaWeblogLocalServiceAsync mt = new MetaWeblogLocalServiceAsyncImpl(URL,
//				USER_NAME, PASSWORD);
//		
//		mt.getPost(9, new AsyncCallback<com.seanchenxi.gwt.wordpress.domain.model.Post>() {
//			
//			@Override
//			public void onSuccess(com.seanchenxi.gwt.wordpress.domain.model.Post result) {
//				RootPanel.get().add(new HTML(result.getAuthorId()));
//			}
//			
//			@Override
//			public void onFailure(Throwable caught) {
//				// TODO Auto-generated method stub
//				
//			}
//		});
//		wp.getUsersBlogs(new AsyncCallback<ArrayList<Blog>>() {
//
//			@Override
//			public void onSuccess(ArrayList<Blog> result) {
//				if (result == null) {
//					RootPanel.get().add(new HTML("no result found !"));
//					return;
//				}
//				RootPanel.get().add(new HTML("<h1>Users Blogs</h1>"));
//				RootPanel.get().add(
//						new HTML("<h1>" + result.size() + " results </h1>"));
//				for (Blog blog : result) {
//					RootPanel.get().add(
//							new HTML("<h2>" + blog.getId() + "</h2>"));
//					RootPanel.get().add(
//							new HTML("<h3>" + blog.getName() + "</h3>"));
//					RootPanel.get().add(
//							new HTML("<h3>" + blog.getUrl() + "</h3>"));
//					RootPanel.get().add(
//							new HTML("<h3>" + blog.getXmlrpc() + "</h3>"));
//				}
//			}
//
//			@Override
//			public void onFailure(Throwable caught) {
//				RootPanel.get().add(
//						new HTML("<h1>Presentation is error"
//								+ caught.getMessage() + "</h1>"));
//			}
//		});
//		
//		wp.getPageStatusList(1, new AsyncCallback<ArrayList<String>>() {
//
//			@Override
//			public void onSuccess(ArrayList<String> result) {
//				if (result == null) {
//					RootPanel.get().add(new HTML("no result found !"));
//					return;
//				}
//				RootPanel.get().add(new HTML("<h1>Page Status</h1>"));
//				RootPanel.get().add(
//						new HTML("<h1>" + result.size() + " results </h1>"));
//				for (String str : result) {
//					RootPanel.get().add(new HTML("<h2>" + str + "</h2>"));
//				}
//			}
//
//			@Override
//			public void onFailure(Throwable caught) {
//				RootPanel.get().add(
//						new HTML("<h1>Presentation is error"
//								+ caught.getMessage() + "</h1>"));
//			}
//		});
//
//		wp.getPages(1, new AsyncCallback<ArrayList<Page>>() {
//
//			@Override
//			public void onSuccess(ArrayList<Page> result) {
//				if (result == null) {
//					RootPanel.get().add(new HTML("no result found !"));
//					return;
//				}
//				RootPanel.get().add(new HTML("<h1>Pages</h1>"));
//				RootPanel.get().add(
//						new HTML("<h1>" + result.size() + " results </h1>"));
//				for (Page page : result) {
//					RootPanel.get().add(
//							new HTML("<h2>" + page.getId() + "</h2>"));
//					RootPanel.get().add(
//							new HTML("<h3>" + page.getUserId() + "</h3>"));
//					RootPanel.get().add(
//							new HTML("<h3>" + page.getAuthorId() + "</h3>"));
//					RootPanel.get().add(
//							new HTML("<h3>" + page.getTitle() + "</h3>"));
//					RootPanel.get().add(
//							new HTML("<h3>" + page.getAllowPings() + "</h3>"));
//					RootPanel.get()
//							.add(new HTML("<h3>" + page.getAllowComments()
//									+ "</h3>"));
//					RootPanel.get().add(
//							new HTML("<h3>" + page.getAuthorDisplayName()
//									+ "</h3>"));
//				}
//			}
//
//			@Override
//			public void onFailure(Throwable caught) {
//				RootPanel.get().add(
//						new HTML("<h1>Presentation is error"
//								+ caught.getMessage() + "</h1>"));
//			}
//		});
//	}
}
